package com.javadroid.webget;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.javadroid.sgbd.EnderecoURLDao;

public class LambeDicionario {	
	
	private String url_atualizada;
	public static int countRecursivo = 0;
	
	public static void main(String[] args) {

		LambeDicionario l = new LambeDicionario();
		l.atualizaURLDeNovelas(1, false);
				
	}

	public void atualizaURLDeNovelas(int id_novela,boolean ok) {
		
		boolean retorno = consultaAtualizaDicionarioDeUrls(id_novela,ok);
		if(retorno){
			EnderecoURLDao dao = new EnderecoURLDao();
			dao.updateUrlAtiva(id_novela, url_atualizada);
		}else{
			if(countRecursivo <= 3){ // 5 dias para frente
				countRecursivo++;
				atualizaURLDeNovelas(id_novela,true);
			}
		}
		countRecursivo = 0;
	}	
	
	
	private String retornoIntervalos(boolean boolValido){
		
		SimpleDateFormat f = new SimpleDateFormat("dd");
		SimpleDateFormat fj = new SimpleDateFormat("MMMM", new Locale("pt","BR"));
		Calendar c = Calendar.getInstance();
		String dia = null;
		if(c.get(Calendar.DAY_OF_WEEK) == 1){ //domingo
			c.add(Calendar.DATE, 1); // jogando para segunda
		}
		if(c.get(Calendar.DAY_OF_WEEK) == 7){ // sabado 
			c.add(Calendar.DATE, 2); // jogando para segunda
		}
		c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
		
		if(boolValido){
			c.add(Calendar.DATE, countRecursivo);
			dia = f.format(c.getTime());
		}else{
			dia = f.format(c.getTime());	
		}
		
		String mesVigente =  (fj.format(c.getTime()));
		c.add(Calendar.MONTH,1);
		String mesfuturo =  (fj.format(c.getTime()));
				
		return mesVigente+"#"+dia+"#"+mesfuturo;
	}
	
	
	private boolean consultaAtualizaDicionarioDeUrls(int id_novela,boolean primeiroDia) {
		Document doc = null;
		try {
			EnderecoURLDao dao = new EnderecoURLDao();
			String urlAux = dao.getUrlAuxDaNovela(id_novela);
			doc = Jsoup.connect(urlAux).get();
			
			//File input = new File("/temp/dic.html");
			//doc = Jsoup.parse(input, "UTF-8", "http://javadroid.com/");
		} catch (IOException e) {
			e.printStackTrace();
		}		
		
		String[] intervalo = retornoIntervalos(primeiroDia).split("#");		
        Elements links = doc.select("a[href]:contains("+intervalo[0]+")");
        links.addAll(doc.select("a[href]:contains("+intervalo[2]+")"));

        String ult = null;
        for (Element elem : links) {
            String href = elem.attr("href");
            
            if(href.contains("dia-"+intervalo[1])){
            	ult = href;
            	break;
            }
        }

        if(ult != null){
        	url_atualizada = ult;
        	return true;
        }else{
        	return false;
        }
                   
	}
}
